'use strict'

const http=require('http');

/*
.jpg  .jpeg->image/jpeg

.png->image/png

.gif->image/gif

.ico->image/x-icon

.txt->text/plain

.json->text/json 或 application/json

.xml->text/xml 或 application/xml

*/ 

let html=`
    <!DOCTYPE html>
    <html>
        <head>
            <title>First HTTP</title>
        </head>
        <body>
            你好.
        </body>
    </html>
`

let routerTable={
    '/':async(request,response)=>{
        response.setHeader('content-type', 'text/html; charset=utf-8');
        response.end(html);
    },
    '/test':async(request,response)=>{
        let status=parseInt(Math.random()*200)+199
        response.statusCode=status;
        response.end('test end')
    },
    '/data':async(request,response)=>{
        let bufferList=[];
        let bufferLength=0;

        request.on('data',chunk=>{
            bufferLength+=chunk.length
            bufferList.push(chunk)
        })

        let bodyData=null;
        request.on('end',()=>{
            if(bufferList.length>0){
                bodyData=Buffer.concat(bufferList,bufferLength)
                bufferList=[];
            }
            //if(bodyData)=if(bodyData!=null||'')
            if(bodyData){
                response.end(bodyData)
            }else{
                
                response.end();
            }
        })

        
    }
}
//chunk 以BUffer类型存储的二进制数据
http.createServer((request,response)=>{

    if(!routerTable[request.url]){
        response.statusCode=404;
        response.end('page not found');
        return
    }
   routerTable[request.url](request,response);
    
}).listen(3456)